package com.bluemsun.naturallanguageprocessing.dao;

import com.bluemsun.naturallanguageprocessing.entity.Question;
import com.bluemsun.naturallanguageprocessing.vo.BrowseVO;
import com.bluemsun.naturallanguageprocessing.vo.QuestionVO;
import com.bluemsun.naturallanguageprocessing.vo.TagVO;
import com.bluemsun.naturallanguageprocessing.vo.UserTagVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

@Repository
public interface QuestionMapper {
    int deleteByPrimaryKey(Integer id);

    int  deleteByClassifyId(Integer id);

    int insert(Question record);

    int insertSelective(Question record);

    Question selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(Question record);

    int updateByPrimaryKey(Question record);

    int checkQuestionById(Integer id);

    /**
     * 查询问题的数量
     * @return
     */
    int selectAllQuestionCount();
    /**
     * 查询问题简介列表根据问题返回
     * @return
     */
    List<QuestionVO> selectSimpleQuestionList(@Param("index")Integer index,@Param("pageSize")Integer pageSize);

    /**
     * 分类查询问题简介列表
     * @param classifyId
     * @return
     */
    List<QuestionVO> selectClassifyQuestionList(@Param("classifyId") Integer classifyId);

    /**
     * 设置问题的访问次数，加一即可
     * @param questionId
     * @return
     */
    int setQuestionVisitNumber(@Param("questionId") Integer questionId);

    /**
     * 设置问题热度
     * @return
     */
    int setQuestionHot(@Param("id")Integer id,@Param("hot") Double hot);

    /**
     * 问题换一换
     * @return
     */
    List<QuestionVO> getQuestionChange(ArrayList<Integer> ids);

    /**
     * 模糊搜索
     * @return
     */
    List<QuestionVO> fuzzySearch(@Param("search") String search);

    /**
     * 获取所有的问题
     * @return
     */
    List<Question> getAllQuestions();

    /**
     * 根据标签查询问题
     * @param tags
     * @return
     */
    List<Question> searchQuestionsByTag(@Param("set") Set<String> tags);
    /**
     * @author     ：hj
     * @date       ：Created in 2021/4/25 20:07
     * @description：分页查询热度
     * @modified By：
     * @version:
     */
    List<Question> selectQuestionByPage( Integer index, Integer pageSize);
/**
 * @author     ：hj
 * @date       ：Created in 2021/4/25 20:07
 * @description：所有的总值
 * @modified By：
 * @version:
 */
    Integer count();

    /**
     * @author     ：hj
     * @date       ：Created in 2021/4/25 20:07
     * @description：根据喜好标签查询
     * @modified By：
     * @version:
     */
    List<Question> selectQuestionByUserTag(@Param("list") List<TagVO> list, @Param("index")Integer index, @Param("pageSize") Integer pageSize);

    List<Question> selectQuestionByCorr(@Param("list") List<BrowseVO>list, @Param("index")Integer index,@Param("pageSize") Integer pageSize);

    List<Question> selectQuestionAndLike();

    Integer updateAllHot(List<Question> list);
}